Vim 宏

VIM用户可以使用宏来录制编辑动作过程,然后再播放以减少重复操作。 具体命令如下:

  1. qa:开始录制宏,并将宏保存到寄存器a中(你也可以把“a”想象成宏的名称),开始后会在状态栏显示“recording”
  2. q:停止录制
  3. @a:播放寄存器a中的宏

练习一

编辑前

# Appending text:
The name "Vim" is an acronym for "Vi IMproved"
The name "Vim" is an acronym for

# Editing text:
Vim is a text editor originally released by Bram Moolenaar in 1991 for the Amiga
Trivia: Vim is a text editor released by Bram Moolenaar in 1991 for the Amiga

# Deleting text:
Vim has a vi compatibility mode
Vim has a vi compatibility mode but when not in this mode Vim has many enhancements over vi

编辑后

将文件中的三对文本中的第二行都变得跟第一行一样。结果如下:

# Appending text:
The name "Vim" is an acronym for "Vi IMproved"
The name "Vim" is an acronym for "Vi IMproved"

# Editing text:
Vim is a text editor originally released by Bram Moolenaar in 1991 for the Amiga
Vim is a text editor originally released by Bram Moolenaar in 1991 for the Amiga

# Deleting text:
Vim has a vi compatibility mode
Vim has a vi compatibility mode

操作解释

qa 开始录制宏 j 下移一行 yy 复制一行 p 粘贴 j 下移一行 dd 删除一行 q 停止录制 2@a 播放两次

如果你这个比较简单,也没有什么实用价值,那就看下面这个吧。


练习二

编辑前

Annette
Warren
Anthony
Preston
Kelly
Taylor
Stiller
Dennis
Schwartz

编辑后

ALTER USER Annette IDENTIFIED BY 'Annette';
ALTER USER Warren IDENTIFIED BY 'Warren';
ALTER USER Anthony IDENTIFIED BY 'Anthony ';
ALTER USER Preston IDENTIFIED BY 'Preston';
ALTER USER Kelly IDENTIFIED BY 'Kelly ';
ALTER USER Taylor IDENTIFIED BY 'Taylor';
ALTER USER Stiller IDENTIFIED BY 'Stiller';
ALTER USER Dennis IDENTIFIED BY 'Dennis';
ALTER USER Schwart IDENTIFIED BY 'Schwart';

操作解释

q a: 开始录制宏,存储到寄存器a中 I “ALTER USER ”: 在行首插入“ALERT USER ” Esc w yw:复制光标后的用户名 A “IDENTIFIED BY '”:到行尾输入IDENTIFIED BY ‘ Esc p:粘贴之前复制的用户名 A “';”:在行尾关闭引号 Esc j q:下移一行并结束录制 8@a:播放宏8次


参考资料:Vi and Vim Macro Tutorial: How To Record and Play